package com.androidcentralmedias;

import java.util.ArrayList;
import java.util.Arrays;

import com.androidcentralmedias.Client;
import com.androidcentralmedias.Server;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.app.Activity;  
import android.content.Intent;
import android.os.Bundle;  
import android.os.Handler;  
import android.os.Message;  
import android.widget.TextView;  
import java.util.Collections;


public class MainActivity extends Activity { 
	TextView mostrador;
	static ArrayList<String> filmes = new ArrayList<String>();  
	  
	Handler handler = new Handler(){
		  @Override
		  public void handleMessage(Message msg) {
			  //mostrador.setText(b.getString("teste"));
			  mostrador.setText(filmes.get(0));
			  startActivity(new Intent("android.intent.action.LISTVIEW"));
				  
		     }
		 }; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
       mostrador = (TextView) findViewById(R.id.hello);
        final Button enviarButton = (Button) findViewById(R.id.enviar);
        final Button receberButton = (Button) findViewById(R.id.filmes);
        enviarButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	Client.enviar("teste1");
            	}});
        receberButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
            	Client.enviar("?filmes");
            	}});
    }
    
    
    @Override
        protected void onStart() {
        	  super.onStart();
        	  // create a new thread
        	  new Thread(new Runnable() {   //Aqui esta eh a antiga funcao controlador(a funcao que comanda tudo)
        	final Server server = new Server();
        	public String mensagem = new String();
        	public String mensagemQuebrada = new String();
        	boolean array=false;
        	public void run() {
        		new Thread(server).start();
        		/*
        		// se vc nao tem WIFI
        		server.fila.add("?lista");
        		server.fila.add("Stranger Than Fiction.avi");
        		server.fila.add("?fim");
        		*/
        		while(true){
        			if (!server.fila.isEmpty()){
        				mensagem=(String)server.fila.get(0);
        				server.fila.remove(server.fila.get(0));
        				if (array==true){
        					lerArray();
        				}
        				else{
        					lerPacote();
        				}
        			}
        			
        			try{
        				   Thread.sleep(50);}
        				catch (Exception e) {e.printStackTrace();}
        				
        			
        		}
        	}
        	public void lerPacote(){					//essa funcao eh chamada quando o programa esta no modo "simples", ou seja esperando por um comando
        		if(mensagem.equals((String)"?lista")){ //se receber a string !lista significa que as proximas Strings serao os arquivos da lista de filmes
        			array = true;
        		}
        		else{ 
        			if(mensagem.equals((String)"!tese")){ //se receber a string !lista significa que as proximas Strings serao os arquivos da lista de filmes
            			Log.d("UDP","tudo de boa");
            		}
        		}
        	}
        	public void lerArray(){					//nessa funçao ele pega os nomes dos arquivos coloca na list filmes da classe MainActivity
        		if(mensagem.equals((String)"?fim")){		//se um dessas strings for !fim isso significa que a lista acabou e portanto o programa deve mostrar a lista
        			Message msg = new Message();
        			Bundle b = new Bundle();
        			b.putString("teste","?Fim!");		//nesse caso o valor da mensagem ainda nao importa!!!
        			msg.setData(b);						
    				handler.sendMessage(msg);			//Nesses ultimos 5 comandos o programa prepara uma mensagem para mandar para o handler, pois esse eh o unico jeito que eu encontrei de alterar o display do android por uma funcao diferente do onCreat ou onStart
        			array=false;
        			//enviarArray();
        		}
        		else{
        		MainActivity.filmes.add(mensagem);  //se nao tiver mensagemQuebrada ela sera null e nao atrapalhara
        		Log.d("UDP",mensagem + " = add filme");
        		}
        	}
    }).start(); //aqui inicia a funcao q foi descrita acima
    }
    
}